// pages/Albums/Albums.js
import request from '../../utils/request';

Page({
  data: {
    albumsList: [], // 新碟列表
    areaList: [ // 分类列表
      { name: '全部', area: 'ALL' },
      { name: '华语', area: 'ZH' },
      { name: '欧美', area: 'EA' },
      { name: '日本', area: 'JP' },
      { name: '韩国', area: 'KR' }
    ],
    areaNum: 0, // 当前选中的分类索引
    area: 'ALL', // 当前选中的分类
    limit: 18, // 每页加载的数量
    offset: 0, // 分页偏移量
    hasMore: true // 是否还有更多数据
  },

  // 页面加载时初始化数据
  onLoad() {
    this.loadAlbums(this.data.area);
  },
  // 加载新碟数据
  async loadAlbums(area, offset = 0) {
    try {
      // 构造请求 URL
      const url = `/top/album?area=${area}&limit=${this.data.limit}&offset=${offset}`;
      console.log('请求的 URL:', url); // 打印请求的 URL
      // 发起请求
      const res = await request(url);
      console.log('API 返回数据:', res);
      // 动态判断数据字段（weekData 或 monthData）
      const dataKey = res.weekData ? 'weekData' : (res.monthData ? 'monthData' : null);
      // 检查返回数据
      if (res && dataKey && res[dataKey].length > 0) {
        const albumsList = res[dataKey].map(item => ({
          ...item,
          picUrl: item.picUrl, // 统一字段名（小写）
          artist: {
            name: item.artist?.name || '未知歌手' // 处理 artist 字段
          }
        }));
        console.log('映射后的数据:', albumsList); // 打印映射后的数据
        // 更新页面数据
        this.setData({
          albumsList: offset === 0 ? albumsList : this.data.albumsList.concat(albumsList),
          offset: offset + this.data.limit,
          hasMore: res[dataKey].length === this.data.limit // 判断是否还有更多数据
        }, () => {
          console.log('albumsList 更新后的数据:', this.data.albumsList); // 打印更新后的数据
        });
      } else {
        console.error('API 返回数据为空或格式不正确');
        wx.showToast({ title: '数据加载失败，请重试', icon: 'none' });
      }
    } catch (error) {
      console.error('加载新碟失败:', error);
      wx.showToast({ title: '加载失败', icon: 'none' });
    }
  },

  // 切换分类
  switchArea(e) {
    const index = e.currentTarget.dataset.index;
    const area = e.currentTarget.dataset.area;

    console.log('切换分类:', area); // 打印当前分类

    this.setData({
      areaNum: index,
      area: area,
      offset: 0, // 重置分页偏移量
      hasMore: true // 重置是否有更多数据
    }, () => {
      this.loadAlbums(area); // 加载对应分类的新碟
    });
  },

  // 上拉加载更多
  onReachBottom() {
    if (this.data.hasMore) {
      this.loadAlbums(this.data.area, this.data.offset);
    } else {
      wx.showToast({ title: '没有更多数据了', icon: 'none' });
    }
  }
});